package tpoo.common.utils;

import sun.security.jca.GetInstance;
import tpoo.common.dto.model.users.UserDTO;

/**
 * Se usa en el cliente, es independiente del cliente
 * @author diego
 *
 */
public class UserSession {

	private UserDTO loggedUser;
	private static UserSession session;
	
	private UserSession(UserDTO loggedUser){
		setUser(loggedUser);
	}

	public static void create(UserDTO loggedUser){
		if (session != null)
			throw new RuntimeException("Ya existe una sesión creada");
		session = new UserSession(loggedUser);
		loggedUser.fireSessionStarted();
	}
	
	//TODO mejorar el "mecanismo de sesiones"
	public void delete(UserDTO loggedUser){
		session = null;
		//loggedUser = null;
	}
	
	public static UserSession getInstance(){
		if (session == null)
			throw new RuntimeException("No hay sesiones creadas. Debe hacer login para que las haya");
		return session;
	}
	
	public static Boolean isSessionStarted(){
		return session != null;
	}
	
	private void setUser(UserDTO user) {
		this.loggedUser = user;
	}

	public UserDTO getUser() {
		return loggedUser;
	}
	
}
